package com.wrb.pwd.component;

import com.wrb.pwd.model.User;
import com.wrb.pwd.service.UserService;

import javax.swing.*;
import java.awt.*;
import java.util.Date;

/**
 * @author wrb
 * @date 2019/10/12 17:41
 */
public class UserPasswordUpdateDialog extends JDialog {

	private int state;

	public int getReturnStatus() {
		return state;
	}

	public UserPasswordUpdateDialog(Component parentComponent, User user) {
		super((Frame) null, "编辑用户信息", true);

		// 设置对话框的宽高
		this.setSize(265, 140);
		// 设置对话框大小不可改变
		this.setResizable(false);
		// 设置对话框相对显示的位置
		this.setLocationRelativeTo(parentComponent);

		// 创建标签显示消息内容
		JLabel lbUserSalt = new JLabel("自定义盐值");
		JTextField txtUserSalt = new JTextField(user.getUserSalt());

		//显示信息的标签
		JLabel lbIMsg = new JLabel("输入自定义盐值，点击确定修改密码");

		//设置标签的文字是红色
		lbIMsg.setForeground(Color.GREEN);

		// 创建一个按钮用于关闭对话框
		JButton okBtn = new JButton("确定");
		JButton cancelBtn = new JButton("取消");

		okBtn.addActionListener(e -> {
			User updateUser = new User();
			updateUser.setId(user.getId());
			Date now = new Date();
			updateUser.setUpdateTime(now);
			String userSalt = txtUserSalt.getText();
			updateUser.setUserSalt(userSalt);
			String password = UserService.getInstance().generatePassword(user.getPlatform(), userSalt);
			updateUser.setPassword(password);

			boolean isSuccess = UserService.getInstance().updateUser(updateUser);
			if (isSuccess) {
				JOptionPane.showMessageDialog(this, "修改成功", "修改结果", JOptionPane.INFORMATION_MESSAGE);
			} else {
				JOptionPane.showMessageDialog(this, "程序出错了", "修改结果", JOptionPane.INFORMATION_MESSAGE);
				return;
			}
			this.state = 1;
			this.dispose();
		});
		cancelBtn.addActionListener(e -> this.dispose());

		lbUserSalt.setBounds(20, 20, 80, 25);
		txtUserSalt.setBounds(90, 20, 120, 25);
		lbIMsg.setBounds(20, 50, 240, 25);
		okBtn.setBounds(60, 80, 60, 25);
		cancelBtn.setBounds(130, 80, 60, 25);

		// 创建对话框的内容面板, 在面板内可以根据自己的需要添加任何组件并做任意是布局
		JPanel panel = new JPanel(null);

		// 添加组件到面板
		panel.add(lbUserSalt);
		panel.add(txtUserSalt);
		panel.add(lbIMsg);
		panel.add(okBtn);
		panel.add(cancelBtn);

		// 设置对话框的内容面板
		this.setContentPane(panel);
		//设置模式 dialog关闭后才能获取state的值
		this.setModal(true);
		// 显示对话框
		this.setVisible(true);
	}

}
